#include <stdio.h>

int func_volatile()
{
    int i;
    volatile int count = 0;  // 定义一个 volatile 变量 count

    for(i = 0; i < 1000000; i++) {
        count++;  // 对 count 进行单纯的自增操作
    }
    return 0;
}

// same as func_volatile beside volatile
int func()
{
    int i;
    int count = 0;  
    for(i = 0; i < 1000000; i++) {
        count++;  // 对 count 进行单纯的自增操作
    }
    return 0;
}

int func1_volatile()
{
    int i;
    volatile int count = 1880;
    int x = 0;
    for(i = 0; i < 1000000; i++) {
        x = count;  // 对 count 进行单纯的自增操作
    }
    return x;
}

// same as func_volatile beside volatile
int func1()
{
    int i;
    int count = 1880;
    int x = 0;
    for(i = 0; i < 1000000; i++) {
        x = count;  // 对 count 进行单纯的自增操作
    }
    return x;
}

int main(void) {
    printf("#【C语言】关键字volatile的作用是什么\n\n");
    printf("https://www.cnblogs.com/Goforyouqp/p/17606953.html\n\n");

    printf("gcc -O3 -c -o volatile.o volatile.c\n");
    printf("objdump -d volatile.o\n");
    printf("To compare the as code between `func_volatile` and `func`, `func1_volatile` and `func1`\n");

    func_volatile();
    func();

    func1_volatile();
    func1();

    return 0;
}